package com.gather.hashmaps;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Example01 {
    public static void main(String[] args) {
        System.out.println("HashMap");

        HashMap<String, String> map = new HashMap<>();
        // 1.添加
        map.put("name","ymb");
        map.put("phone","158*****4567");
        map.put("age","27");
        System.out.println(map);// {phone=158*****4567, name=ymb, age=27}
        // 2.获取 name值
        System.out.println(map.get("name"));
        // 3.获取所有的key
        System.out.println(map.keySet());// [phone, name, age]
        // 4.获取所有的value
        System.out.println(map.values());//[158*****4567, ymb, 27]

        // 遍历方式
        // 1.使用for
        Set<String> strings = map.keySet();
        for (String string : strings) {
            String s = map.get(string);
            System.out.println(s);
        }
        // 2.使用迭代器
        Iterator<String> iterator = strings.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            String s = map.get(next);
            System.out.println("value "+ s);
        }
        /**
         * 3.使用 entrySet() 方法,获取集合中所有的映射关系
         * 从映射关系获取键和值
         * Entry是Map内部接口，每个Map.Entry 对象代表Map中
         * 的一个键值对，使用迭代器进行迭代
         * 分别使用：
         * getKey() 获取 key
         * getValue() 获取 value
         */
        Set<Map.Entry<String, String>> entries = map.entrySet();
        Iterator<Map.Entry<String, String>> entriesIterator = entries.iterator();
        while (entriesIterator.hasNext()) {
            Map.Entry<String, String> next =  entriesIterator.next();// 获取集合中的映射关系
            // 获取映射关系中的键
            String key = next.getKey();
            // 获取映射关系中的值
            String value = next.getValue();
            System.out.println(key+":"+value);
        }
    }
}
